#define LINEAR_ID 1
#define DIODE_ID 2
#define MOS_ID 3
#define BJT_ID 4

typedef 
struct linear_elem{
	//user input data	
	char *name;
	char *usr_plus_node, *usr_minus_node;
	
	//actual system data, for MNA etc
	int plus_node, minus_node;	
	int g_index;	//G1 or G2
	
	double value;	
}
LINEAR_ELEMENT;

typedef 
struct _node_data{
	//user input data	
	char *name;
	int id;
	int g_id;	//=-1 value will mean V(G1 group), >=0 will mean A(G2 group)
	double value;
	char print_flag;
	
	struct _node_data *nxt;
}
NODE_DATA;

typedef 
struct _g2node_data{
	//user input data	
	char *name;
	int id;
	double value;
	char print_flag;	

	struct _g2node_data *nxt;
}
G2NODE_DATA;














typedef 
struct bjt_elem{
	char *name;
	unsigned int c_node, b_node, e_node;
	FILE *model_name;
	void *area;
}
BJT_ELEMENT;

typedef 
struct mos_elem{
	char *name;
	unsigned int d_node, g_node, s_node, b_node;
	FILE *model_name;
	double length, width;
}
MOS_ELEMENT;

typedef 
struct diode_elem{
	char *name;
	unsigned int plus_node, minus_node;
	FILE *model_name;
	void *area;
}
DIODE_ELEMENT;


typedef
struct node 
{
	char type;
	unsigned long hashcode;
	void *data; 
	struct node *nxt;    
}
NODE;
